// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "Subsystems/EngineSubsystem.h"
#include "LyraExperienceManager.generated.h"

/**
 * 经验管理器 - 主要用于多个PIE会话之间的仲裁
 */
UCLASS(MinimalAPI)
class ULyraExperienceManager : public UEngineSubsystem
{
	GENERATED_BODY()

public:
#if WITH_EDITOR
	LYRAGAME_API void OnPlayInEditorBegun(); // PIE开始时的处理

	static void NotifyOfPluginActivation(const FString PluginURL); // 通知插件激活
	static bool RequestToDeactivatePlugin(const FString PluginURL); // 请求停用插件
#else
	static void NotifyOfPluginActivation(const FString PluginURL) {} // 空实现（非编辑器版本）
	static bool RequestToDeactivatePlugin(const FString PluginURL) { return true; } // 空实现（非编辑器版本）
#endif

private:
	// 记录给定游戏功能插件的激活请求计数的映射（用于PIE期间的先进后出激活管理）
	TMap<FString, int32> GameFeaturePluginRequestCountMap; // 插件URL到激活计数的映射
};